home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS04.ADF / idemo / getascii.c < prev    next >
C/C++ Source or Header  |  1985-10-26  |  4KB  |  107 lines

  1. /****************************************************************
  2. *                                                               *
  3. * Copyright 1985, Commodore Amiga Inc.  All rights reserved.    *
  4. * No part of this program may be reproduced, transmitted,       *
  5. * transcribed, stored in retrieval system, or translated into   *
  6. * any language or computer language, in any form or by any      *
  7. * means, electronic, mechanical, magnetic, optical, chemical,   *
  8. * manual or otherwise, without the prior written permission of  *
  9. * Commodore Amiga Incorporated, 983 University Ave, #D          *
  10. * Los Gatos, CA 95030                                           *
  11. *                                                               *
  12. ****************************************************************/
  13.  
  14. /*** getascii.c ***/
  15.  
  16. /*****************************************************************************
  17.  *
  18.  * INTUITION Test Suite -- menu structures
  19.  *
  20.  * =Robert J. Mical=
  21.  * 28 April 1985
  22.  * (created:  31 January 1985)
  23.  *
  24.  * At one time or another, this program has tested all of the INTUITION 
  25.  * features, and sometimes has tested even the limits of my patience.
  26.  * 
  27.  * CONFIDENTIAL and PROPRIETARY
  28.  * Copyright (C) 1985, COMMODORE-AMIGA, INC.
  29.  * All Rights Reserved
  30.  *
  31.  ****************************************************************************/
  32.  
  33.  
  34. #include "idemoall.h"
  35.  
  36. #define SHIFTY (IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT|IEQUALIFIER_CAPSLOCK)
  37.  
  38. UBYTE RawToAscii[] =
  39. {
  40.     /* 0x00 - 0x07 */   '`',  '1',  '2',  '3',  '4',  '5',  '6',  '7',
  41.     /* 0x08 - 0x0F */   '8',  '9',  '0',  '-',  '=',  '\\', NULL, '0',
  42.     /* 0x10 - 0x17 */   'q',  'w',  'e',  'r',  't',  'y',  'u',  'i',
  43.     /* 0x18 - 0x1F */   'o',  'p',  '[',  ']',  NULL, '1',  '2',  '3',
  44.     /* 0x20 - 0x27 */   'a',  's',  'd',  'f',  'g',  'h',  'j',  'k',
  45.     /* 0x28 - 0x2F */   'l',  ';',  '\'', NULL, NULL, '4',  '5',  '6',
  46.     /* 0x30 - 0x37 */   NULL, 'z',  'x',  'c',  'v',  'b',  'n',  'm',  
  47.     /* 0x38 - 0x3F */   ',',  '.',  '/',  NULL, '.',  '7',  '8',  '9',
  48.                         ' ',  /* 0x40 Space */  
  49.                         NULL, /* 0x41 Backspace */
  50.                         NULL, /* 0x42 Tab */
  51.                         NULL, /* 0x43 Enter */
  52.                         NULL, /* 0x44 Return */
  53.                         NULL, /* 0x45 Escape */
  54.                         NULL, /* 0x46 Delete */
  55.                         NULL, /* 0x47 null */
  56.                         NULL, /* 0x48 null */
  57.                         NULL, /* 0x49 null */
  58.                         '-',  /* 0x4A NPad's - */
  59. };
  60.  
  61.  
  62. UBYTE AsciiShifted[] =
  63. {
  64.     /* 0x00 - 0x07 */   '~',  '!',  '@',  '#',  '$',  '%',  '^',  '&',
  65.     /* 0x08 - 0x0F */   '*',  '(',  ')',  '_',  '+',  '|', NULL,  '0',
  66.     /* 0x10 - 0x17 */   'Q',  'W',  'E',  'R',  'T',  'Y',  'U',  'I',
  67.     /* 0x18 - 0x1F */   'O',  'P',  '{',  '}',  NULL, '1',  '2',  '3',
  68.     /* 0x20 - 0x27 */   'A',  'S',  'D',  'F',  'G',  'H',  'J',  'K',
  69.     /* 0x28 - 0x2F */   'L',  ':',  '\"', NULL, NULL, '4',  '5',  '6',
  70.     /* 0x30 - 0x37 */   NULL, 'Z',  'X',  'C',  'V',  'B',  'N',  'M',
  71.     /* 0x38 - 0x3F */   '<',  '>',  '?',  NULL, '.',  '7', ' 8',  '9',
  72.                         ' ',  /* 0x40 Space */  
  73.                         NULL, /* 0x41 Backspace */
  74.                         NULL, /* 0x42 Tab */
  75.                         NULL, /* 0x43 Enter */
  76.                         NULL, /* 0x44 Return */
  77.                         NULL, /* 0x45 Escape */
  78.                         NULL, /* 0x46 Delete */
  79.                         NULL, /* 0x47 null */
  80.                         NULL, /* 0x48 null */
  81.                         NULL, /* 0x49 null */
  82.                         '-',  /* 0x4A NPad's - */
  83. };
  84.  
  85.  
  86. UBYTE GetAscii(c)
  87. UBYTE c;
  88. {
  89.     if ((c & 0x7F) > sizeof(RawToAscii)) return(0);
  90.  
  91.     if (c & 0x80) return(AsciiShifted[c & 0x7F]);
  92.     else return(RawToAscii[c]);
  93. }
  94.  
  95.  
  96. UBYTE GetKey(message)
  97. struct IntuiMessage *message;
  98. {
  99. /*???printf("c=%lx\n",message->Code);*/
  100.     if (message->Code & IECODE_UP_PREFIX) return(0);
  101.  
  102.     if (message->Qualifier & SHIFTY) message->Code |= 0x80;
  103. /*???printf("GetAscii=%lx\n",GetAscii(message->Code));*/
  104.     return(GetAscii(message->Code));
  105. }
  106.  
  107.